As computing devices become more powerful and are used for increasingly complex tasks, the interfaces by which humans interact with the devices and the software executing thereon can be unwieldly and overly complicated. For example, software ranging from an image processing application to an integrated development environment (IDE) for application development can have thousands of commands and keyboard shortcuts, along with numerous toolbars, palettes, and menu items. In many cases, the sheer breadth of the interfaces for modern software can impede users from even learning about and accessing various features offered by the software.